package br.com.orion.sga.model.entities;

// Generated Jul 19, 2014 6:45:05 PM by Hibernate Tools 3.4.0.CR1

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * PagamentoCartao generated by hbm2java
 */
@Entity
@Table(name = "pagamento_cartao", catalog = "sga")
public class PagamentoCartao implements java.io.Serializable {

	private long id;
	private OperadoraCartao operadoraCartao;
	private MovimentacaoCaixa movimentacaoCaixa;
	private int numeroParcela;
	private Set<ParcelaPagamento> parcelaPagamentos = new HashSet<ParcelaPagamento>(
			0);

	public PagamentoCartao() {
	}

	public PagamentoCartao(long id, OperadoraCartao operadoraCartao,
			MovimentacaoCaixa movimentacaoCaixa, int numeroParcela) {
		this.id = id;
		this.operadoraCartao = operadoraCartao;
		this.movimentacaoCaixa = movimentacaoCaixa;
		this.numeroParcela = numeroParcela;
	}

	public PagamentoCartao(long id, OperadoraCartao operadoraCartao,
			MovimentacaoCaixa movimentacaoCaixa, int numeroParcela,
			Set<ParcelaPagamento> parcelaPagamentos) {
		this.id = id;
		this.operadoraCartao = operadoraCartao;
		this.movimentacaoCaixa = movimentacaoCaixa;
		this.numeroParcela = numeroParcela;
		this.parcelaPagamentos = parcelaPagamentos;
	}

	@Id
	@Column(name = "id", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long getId() {
		return this.id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_operadora_cartao", nullable = false)
	public OperadoraCartao getOperadoraCartao() {
		return this.operadoraCartao;
	}

	public void setOperadoraCartao(OperadoraCartao operadoraCartao) {
		this.operadoraCartao = operadoraCartao;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_movimentacao_caixa", nullable = false)
	public MovimentacaoCaixa getMovimentacaoCaixa() {
		return this.movimentacaoCaixa;
	}

	public void setMovimentacaoCaixa(MovimentacaoCaixa movimentacaoCaixa) {
		this.movimentacaoCaixa = movimentacaoCaixa;
	}

	@Column(name = "numero_parcela", nullable = false)
	public int getNumeroParcela() {
		return this.numeroParcela;
	}

	public void setNumeroParcela(int numeroParcela) {
		this.numeroParcela = numeroParcela;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "pagamentoCartao", cascade=CascadeType.ALL)
	public Set<ParcelaPagamento> getParcelaPagamentos() {
		return this.parcelaPagamentos;
	}

	public void setParcelaPagamentos(Set<ParcelaPagamento> parcelaPagamentos) {
		this.parcelaPagamentos = parcelaPagamentos;
	}

}
